type t =
  | A0
  | A1
  | A2
  | A3
  | A4
  | A5
  | A6
  | A7
  | A8
  | A9
  | A10
  | A11
  | A12
  | A13
  | A14
  | A15
  | A16
  | A17
  | A18
  | A19
  | A20
  | A21
  | A22
  | A23
  | A24
  | A25
  | A26
  | A27
  | A28
  | A29
  | A30
  | A31
  | A32
  | A33
  | A34
  | A35
  | A36
  | A37
  | A38
  | A39
  | A40
  | A41
  | A42
  | A43
  | A44
  | A45
  | A46
  | A47
  | A48
  | A49
  | A50
  | A51
  | A52
  | A53
  | A54
  | A55
  | A56
  | A57
  | A58
  | A59
  | A60
  | A61
  | A62
  | A63
  | A64
  | A65
  | A66
  | A67
  | A68
  | A69
  | A70
  | A71
  | A72
  | A73
  | A74
  | A75
  | A76
  | A77
  | A78
  | A79
  | A80
  | A81
  | A82
  | A83
  | A84
  | A85
  | A86
  | A87
  | A88
  | A89
  | A90
  | A91
  | A92
  | A93
  | A94
  | A95
  | A96
  | A97
  | A98
  | A99
  | A100
  | A101
  | A102
  | A103
  | A104
  | A105
  | A106
  | A107
  | A108
  | A109
  | A110
  | A111
  | A112
  | A113
  | A114
  | A115
  | A116
  | A117
  | A118
  | A119
  | A120
  | A121
  | A122
  | A123
  | A124
  | A125
  | A126
  | A127
  | A128
  | A129
  | A130
  | A131
  | A132
  | A133
  | A134
  | A135
  | A136
  | A137
  | A138
  | A139
  | A140
  | A141
  | A142
  | A143
  | A144
  | A145
  | A146
  | A147
  | A148
  | A149
  | A150
  | A151
  | A152
  | A153
  | A154
  | A155
  | A156
  | A157
  | A158
  | A159
  | A160
  | A161
  | A162
  | A163
  | A164
  | A165
  | A166
  | A167
  | A168
  | A169
  | A170
  | A171
  | A172
  | A173
  | A174
  | A175
  | A176
  | A177
  | A178
  | A179
  | A180
  | A181
  | A182
  | A183
  | A184
  | A185
  | A186
  | A187
  | A188
  | A189
  | A190
  | A191
  | A192
  | A193
  | A194
  | A195
  | A196
  | A197
  | A198
  | A199
  | A200
  | A201
  | A202
  | A203
  | A204
  | A205
  | A206
  | A207
  | A208
  | A209
  | A210
  | A211
  | A212
  | A213
  | A214
  | A215
  | A216
  | A217
  | A218
  | A219
  | A220
  | A221
  | A222
  | A223
  | A224
  | A225
  | A226
  | A227
  | A228
  | A229
  | A230
  | A231
  | A232
  | A233
  | A234
  | A235
  | A236
  | A237
  | A238
  | A239
  | A240
  | A241
  | A242
  | A243
  | A244
  | A245
  | A246
  | A247
  | A248
  | A249
  | A250
  | A251
  | A252
  | A253
  | A254
  | A255
  | A256
  | A257
  | A258
  | A259
  | A260
  | A261
  | A262
  | A263
  | A264
  | A265
  | A266
  | A267
  | A268
  | A269
  | A270
  | A271
  | A272
  | A273
  | A274
  | A275
  | A276
  | A277
  | A278
  | A279
  | A280
  | A281
  | A282
  | A283
  | A284
  | A285
  | A286
  | A287
  | A288
  | A289
  | A290
  | A291
  | A292
  | A293
  | A294
  | A295
  | A296
  | A297
  | A298
  | A299
let to_enum = x =>
  switch x {
  | A0 => 0
  | A1 => 1
  | A2 => 2
  | A3 => 3
  | A4 => 4
  | A5 => 5
  | A6 => 6
  | A7 => 7
  | A8 => 8
  | A9 => 9
  | A10 => 10
  | A11 => 11
  | A12 => 12
  | A13 => 13
  | A14 => 14
  | A15 => 15
  | A16 => 16
  | A17 => 17
  | A18 => 18
  | A19 => 19
  | A20 => 20
  | A21 => 21
  | A22 => 22
  | A23 => 23
  | A24 => 24
  | A25 => 25
  | A26 => 26
  | A27 => 27
  | A28 => 28
  | A29 => 29
  | A30 => 30
  | A31 => 31
  | A32 => 32
  | A33 => 33
  | A34 => 34
  | A35 => 35
  | A36 => 36
  | A37 => 37
  | A38 => 38
  | A39 => 39
  | A40 => 40
  | A41 => 41
  | A42 => 42
  | A43 => 43
  | A44 => 44
  | A45 => 45
  | A46 => 46
  | A47 => 47
  | A48 => 48
  | A49 => 49
  | A50 => 50
  | A51 => 51
  | A52 => 52
  | A53 => 53
  | A54 => 54
  | A55 => 55
  | A56 => 56
  | A57 => 57
  | A58 => 58
  | A59 => 59
  | A60 => 60
  | A61 => 61
  | A62 => 62
  | A63 => 63
  | A64 => 64
  | A65 => 65
  | A66 => 66
  | A67 => 67
  | A68 => 68
  | A69 => 69
  | A70 => 70
  | A71 => 71
  | A72 => 72
  | A73 => 73
  | A74 => 74
  | A75 => 75
  | A76 => 76
  | A77 => 77
  | A78 => 78
  | A79 => 79
  | A80 => 80
  | A81 => 81
  | A82 => 82
  | A83 => 83
  | A84 => 84
  | A85 => 85
  | A86 => 86
  | A87 => 87
  | A88 => 88
  | A89 => 89
  | A90 => 90
  | A91 => 91
  | A92 => 92
  | A93 => 93
  | A94 => 94
  | A95 => 95
  | A96 => 96
  | A97 => 97
  | A98 => 98
  | A99 => 99
  | A100 => 100
  | A101 => 101
  | A102 => 102
  | A103 => 103
  | A104 => 104
  | A105 => 105
  | A106 => 106
  | A107 => 107
  | A108 => 108
  | A109 => 109
  | A110 => 110
  | A111 => 111
  | A112 => 112
  | A113 => 113
  | A114 => 114
  | A115 => 115
  | A116 => 116
  | A117 => 117
  | A118 => 118
  | A119 => 119
  | A120 => 120
  | A121 => 121
  | A122 => 122
  | A123 => 123
  | A124 => 124
  | A125 => 125
  | A126 => 126
  | A127 => 127
  | A128 => 128
  | A129 => 129
  | A130 => 130
  | A131 => 131
  | A132 => 132
  | A133 => 133
  | A134 => 134
  | A135 => 135
  | A136 => 136
  | A137 => 137
  | A138 => 138
  | A139 => 139
  | A140 => 140
  | A141 => 141
  | A142 => 142
  | A143 => 143
  | A144 => 144
  | A145 => 145
  | A146 => 146
  | A147 => 147
  | A148 => 148
  | A149 => 149
  | A150 => 150
  | A151 => 151
  | A152 => 152
  | A153 => 153
  | A154 => 154
  | A155 => 155
  | A156 => 156
  | A157 => 157
  | A158 => 158
  | A159 => 159
  | A160 => 160
  | A161 => 161
  | A162 => 162
  | A163 => 163
  | A164 => 164
  | A165 => 165
  | A166 => 166
  | A167 => 167
  | A168 => 168
  | A169 => 169
  | A170 => 170
  | A171 => 171
  | A172 => 172
  | A173 => 173
  | A174 => 174
  | A175 => 175
  | A176 => 176
  | A177 => 177
  | A178 => 178
  | A179 => 179
  | A180 => 180
  | A181 => 181
  | A182 => 182
  | A183 => 183
  | A184 => 184
  | A185 => 185
  | A186 => 186
  | A187 => 187
  | A188 => 188
  | A189 => 189
  | A190 => 190
  | A191 => 191
  | A192 => 192
  | A193 => 193
  | A194 => 194
  | A195 => 195
  | A196 => 196
  | A197 => 197
  | A198 => 198
  | A199 => 199
  | A200 => 200
  | A201 => 201
  | A202 => 202
  | A203 => 203
  | A204 => 204
  | A205 => 205
  | A206 => 206
  | A207 => 207
  | A208 => 208
  | A209 => 209
  | A210 => 210
  | A211 => 211
  | A212 => 212
  | A213 => 213
  | A214 => 214
  | A215 => 215
  | A216 => 216
  | A217 => 217
  | A218 => 218
  | A219 => 219
  | A220 => 220
  | A221 => 221
  | A222 => 222
  | A223 => 223
  | A224 => 224
  | A225 => 225
  | A226 => 226
  | A227 => 227
  | A228 => 228
  | A229 => 229
  | A230 => 230
  | A231 => 231
  | A232 => 232
  | A233 => 233
  | A234 => 234
  | A235 => 235
  | A236 => 236
  | A237 => 237
  | A238 => 238
  | A239 => 239
  | A240 => 240
  | A241 => 241
  | A242 => 242
  | A243 => 243
  | A244 => 244
  | A245 => 245
  | A246 => 246
  | A247 => 247
  | A248 => 248
  | A249 => 249
  | A250 => 250
  | A251 => 251
  | A252 => 252
  | A253 => 253
  | A254 => 254
  | A255 => 255
  | A256 => 256
  | A257 => 257
  | A258 => 258
  | A259 => 259
  | A260 => 260
  | A261 => 261
  | A262 => 262
  | A263 => 263
  | A264 => 264
  | A265 => 265
  | A266 => 266
  | A267 => 267
  | A268 => 268
  | A269 => 269
  | A270 => 270
  | A271 => 271
  | A272 => 272
  | A273 => 273
  | A274 => 274
  | A275 => 275
  | A276 => 276
  | A277 => 277
  | A278 => 278
  | A279 => 279
  | A280 => 280
  | A281 => 281
  | A282 => 282
  | A283 => 283
  | A284 => 284
  | A285 => 285
  | A286 => 286
  | A287 => 287
  | A288 => 288
  | A289 => 289
  | A290 => 290
  | A291 => 291
  | A292 => 292
  | A293 => 293
  | A294 => 294
  | A295 => 295
  | A296 => 296
  | A297 => 297
  | A298 => 298
  | A299 => 299
  }
let to_string = x =>
  switch x {
  | A0 => "A0"
  | A1 => "A1"
  | A2 => "A2"
  | A3 => "A3"
  | A4 => "A4"
  | A5 => "A5"
  | A6 => "A6"
  | A7 => "A7"
  | A8 => "A8"
  | A9 => "A9"
  | A10 => "A10"
  | A11 => "A11"
  | A12 => "A12"
  | A13 => "A13"
  | A14 => "A14"
  | A15 => "A15"
  | A16 => "A16"
  | A17 => "A17"
  | A18 => "A18"
  | A19 => "A19"
  | A20 => "A20"
  | A21 => "A21"
  | A22 => "A22"
  | A23 => "A23"
  | A24 => "A24"
  | A25 => "A25"
  | A26 => "A26"
  | A27 => "A27"
  | A28 => "A28"
  | A29 => "A29"
  | A30 => "A30"
  | A31 => "A31"
  | A32 => "A32"
  | A33 => "A33"
  | A34 => "A34"
  | A35 => "A35"
  | A36 => "A36"
  | A37 => "A37"
  | A38 => "A38"
  | A39 => "A39"
  | A40 => "A40"
  | A41 => "A41"
  | A42 => "A42"
  | A43 => "A43"
  | A44 => "A44"
  | A45 => "A45"
  | A46 => "A46"
  | A47 => "A47"
  | A48 => "A48"
  | A49 => "A49"
  | A50 => "A50"
  | A51 => "A51"
  | A52 => "A52"
  | A53 => "A53"
  | A54 => "A54"
  | A55 => "A55"
  | A56 => "A56"
  | A57 => "A57"
  | A58 => "A58"
  | A59 => "A59"
  | A60 => "A60"
  | A61 => "A61"
  | A62 => "A62"
  | A63 => "A63"
  | A64 => "A64"
  | A65 => "A65"
  | A66 => "A66"
  | A67 => "A67"
  | A68 => "A68"
  | A69 => "A69"
  | A70 => "A70"
  | A71 => "A71"
  | A72 => "A72"
  | A73 => "A73"
  | A74 => "A74"
  | A75 => "A75"
  | A76 => "A76"
  | A77 => "A77"
  | A78 => "A78"
  | A79 => "A79"
  | A80 => "A80"
  | A81 => "A81"
  | A82 => "A82"
  | A83 => "A83"
  | A84 => "A84"
  | A85 => "A85"
  | A86 => "A86"
  | A87 => "A87"
  | A88 => "A88"
  | A89 => "A89"
  | A90 => "A90"
  | A91 => "A91"
  | A92 => "A92"
  | A93 => "A93"
  | A94 => "A94"
  | A95 => "A95"
  | A96 => "A96"
  | A97 => "A97"
  | A98 => "A98"
  | A99 => "A99"
  | A100 => "A100"
  | A101 => "A101"
  | A102 => "A102"
  | A103 => "A103"
  | A104 => "A104"
  | A105 => "A105"
  | A106 => "A106"
  | A107 => "A107"
  | A108 => "A108"
  | A109 => "A109"
  | A110 => "A110"
  | A111 => "A111"
  | A112 => "A112"
  | A113 => "A113"
  | A114 => "A114"
  | A115 => "A115"
  | A116 => "A116"
  | A117 => "A117"
  | A118 => "A118"
  | A119 => "A119"
  | A120 => "A120"
  | A121 => "A121"
  | A122 => "A122"
  | A123 => "A123"
  | A124 => "A124"
  | A125 => "A125"
  | A126 => "A126"
  | A127 => "A127"
  | A128 => "A128"
  | A129 => "A129"
  | A130 => "A130"
  | A131 => "A131"
  | A132 => "A132"
  | A133 => "A133"
  | A134 => "A134"
  | A135 => "A135"
  | A136 => "A136"
  | A137 => "A137"
  | A138 => "A138"
  | A139 => "A139"
  | A140 => "A140"
  | A141 => "A141"
  | A142 => "A142"
  | A143 => "A143"
  | A144 => "A144"
  | A145 => "A145"
  | A146 => "A146"
  | A147 => "A147"
  | A148 => "A148"
  | A149 => "A149"
  | A150 => "A150"
  | A151 => "A151"
  | A152 => "A152"
  | A153 => "A153"
  | A154 => "A154"
  | A155 => "A155"
  | A156 => "A156"
  | A157 => "A157"
  | A158 => "A158"
  | A159 => "A159"
  | A160 => "A160"
  | A161 => "A161"
  | A162 => "A162"
  | A163 => "A163"
  | A164 => "A164"
  | A165 => "A165"
  | A166 => "A166"
  | A167 => "A167"
  | A168 => "A168"
  | A169 => "A169"
  | A170 => "A170"
  | A171 => "A171"
  | A172 => "A172"
  | A173 => "A173"
  | A174 => "A174"
  | A175 => "A175"
  | A176 => "A176"
  | A177 => "A177"
  | A178 => "A178"
  | A179 => "A179"
  | A180 => "A180"
  | A181 => "A181"
  | A182 => "A182"
  | A183 => "A183"
  | A184 => "A184"
  | A185 => "A185"
  | A186 => "A186"
  | A187 => "A187"
  | A188 => "A188"
  | A189 => "A189"
  | A190 => "A190"
  | A191 => "A191"
  | A192 => "A192"
  | A193 => "A193"
  | A194 => "A194"
  | A195 => "A195"
  | A196 => "A196"
  | A197 => "A197"
  | A198 => "A198"
  | A199 => "A199"
  | A200 => "A200"
  | A201 => "A201"
  | A202 => "A202"
  | A203 => "A203"
  | A204 => "A204"
  | A205 => "A205"
  | A206 => "A206"
  | A207 => "A207"
  | A208 => "A208"
  | A209 => "A209"
  | A210 => "A210"
  | A211 => "A211"
  | A212 => "A212"
  | A213 => "A213"
  | A214 => "A214"
  | A215 => "A215"
  | A216 => "A216"
  | A217 => "A217"
  | A218 => "A218"
  | A219 => "A219"
  | A220 => "A220"
  | A221 => "A221"
  | A222 => "A222"
  | A223 => "A223"
  | A224 => "A224"
  | A225 => "A225"
  | A226 => "A226"
  | A227 => "A227"
  | A228 => "A228"
  | A229 => "A229"
  | A230 => "A230"
  | A231 => "A231"
  | A232 => "A232"
  | A233 => "A233"
  | A234 => "A234"
  | A235 => "A235"
  | A236 => "A236"
  | A237 => "A237"
  | A238 => "A238"
  | A239 => "A239"
  | A240 => "A240"
  | A241 => "A241"
  | A242 => "A242"
  | A243 => "A243"
  | A244 => "A244"
  | A245 => "A245"
  | A246 => "A246"
  | A247 => "A247"
  | A248 => "A248"
  | A249 => "A249"
  | A250 => "A250"
  | A251 => "A251"
  | A252 => "A252"
  | A253 => "A253"
  | A254 => "A254"
  | A255 => "A255"
  | A256 => "A256"
  | A257 => "A257"
  | A258 => "A258"
  | A259 => "A259"
  | A260 => "A260"
  | A261 => "A261"
  | A262 => "A262"
  | A263 => "A263"
  | A264 => "A264"
  | A265 => "A265"
  | A266 => "A266"
  | A267 => "A267"
  | A268 => "A268"
  | A269 => "A269"
  | A270 => "A270"
  | A271 => "A271"
  | A272 => "A272"
  | A273 => "A273"
  | A274 => "A274"
  | A275 => "A275"
  | A276 => "A276"
  | A277 => "A277"
  | A278 => "A278"
  | A279 => "A279"
  | A280 => "A280"
  | A281 => "A281"
  | A282 => "A282"
  | A283 => "A283"
  | A284 => "A284"
  | A285 => "A285"
  | A286 => "A286"
  | A287 => "A287"
  | A288 => "A288"
  | A289 => "A289"
  | A290 => "A290"
  | A291 => "A291"
  | A292 => "A292"
  | A293 => "A293"
  | A294 => "A294"
  | A295 => "A295"
  | A296 => "A296"
  | A297 => "A297"
  | A298 => "A298"
  | A299 => "A299"
  }
